#ifndef __WINDOWS_PLATFORM_H__
#define __WINDOWS_PLATFORM_H__

#include "fwPlatformContext.h"
#include "fwESContext.h"

#include <Windows.h>

/// esCreateWindow flag - RGB color buffer
#define ES_WINDOW_RGB           0
/// esCreateWindow flag - ALPHA color buffer
#define ES_WINDOW_ALPHA         1 
/// esCreateWindow flag - depth buffer
#define ES_WINDOW_DEPTH         2 
/// esCreateWindow flag - stencil buffer
#define ES_WINDOW_STENCIL       4
/// esCreateWindow flat - multi-sample buffer
#define ES_WINDOW_MULTISAMPLE   8

class Windows : public PlatformContext
{
private:
	static Windows* m_pInstance;
protected:
	FWuint m_iHeight;
	FWuint m_iWidth;
protected:
	Windows();

	//Create windows for run game 
	virtual FWboolean CreateWindows() = 0;
	//Create client windows
	virtual FWboolean CreateClientWindows() = 0;
	//Main windows process
	static LRESULT WinProc(HWND, UINT, WPARAM, LPARAM);

	//Keyboard process
	virtual void KeyboardUpdate(WPARAM wParam, FWboolean status) = 0;
	//Mouse process
	virtual void MouseUpdate() = 0;
public:
	virtual ~Windows();

	/**
	//override methods
	*/

	//Destroy windows instance
	virtual void Destroy();
};

#endif